package apple.ui;

/**
 * A custom component/widget which can display a raster representing the screen
 * output of a computer system. This interface would be implemented for each GUI
 * system used by the system.
 * 
 * @author Christiaan
 * 
 */
public interface IMonitor {

   public int TOTAL_HORIZONTAL_SIZE = 600;

   public int TOTAL_VERTICAL_SIZE = 450;

   public int CONTENT_HORIZONTAL_SIZE = 560;

   public int CONTENT_VERTICAL_SIZE = 384;

   public int BORDER_HORIZONTAL_SIZE = (TOTAL_HORIZONTAL_SIZE - CONTENT_HORIZONTAL_SIZE) / 2;

   public int BORDER_VERTICAL_SIZE = (TOTAL_VERTICAL_SIZE - CONTENT_VERTICAL_SIZE) / 2;

   public static final String COLOR_MONITOR_SHORT_NAME = "Color Monitor";

   /**
    * Draws the raster. The input data represents the screen resolution of the
    * emulated system, but the GUI implementation may scale its output as
    * necessary.<br>
    * <br>
    * Depending on the GUI implementation, a (runtime) exception may be thrown
    * if this method is called on a component which has been disposed.
    * 
    * @param imageData
    *           an array of integer values, each of which represents a single
    *           pixel and is equal to an Apple color value (see p. 23 of Apple
    *           IIe Technical Reference Manual).
    */
   public void drawImage(int[][] imageData);
}
